/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 周斌
 * Date: 2023-11-23
 * Time: 22:40
 */
public class Test {
    public static void main(String[] args) {
        int a = 100;
        int b = 100;
        Integer i1 = new Integer(a);
        Integer i2 = new Integer(b);
        //这里有可能比较的是引用(地址)
        System.out.println(i1 == i2);
        System.out.println("================");


        Integer c = 100;
        Integer d = 100;
        //这里就调用了valueOf()方法
        System.out.println(c == d);
        System.out.println("=======================");


        Integer.valueOf(i1);
        Integer.valueOf(i2);
        //这里根本就没有调用valueOf()方法
        System.out.println(i1 == i2);
        //这里打印的是i1的值
        System.out.println(Integer.valueOf(i1));
        System.out.println("========================");
    }
}
//结论:c与d相等是因为本身就是Inerger包装类定义的变量，然后再调用valueOf()这个方法传参的时候直接自动拆包成基本类型
//    而i1和i2一开始就是由基本类型手动装包变成包装类，此时的i1和i2是开辟了两个不同的空间，也是一个引用变量，而此时比较的是两个对象的地址，没调用valueOf()方法

